<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html lang="en" xml:lang="en" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<head>
<META http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Task: Integrate and Create Build</title>
<meta name="uma.type" content="Task">
<meta name="uma.name" content="integrate_and_create_build">
<meta name="uma.presentationName" content="Integrate and Create Build">
<meta name="uma.category" content="Discipline:development_discipline:Development">
<meta name="element_type" content="activity">
<meta name="filetype" content="description">
<meta name="role" content="">
<link rel="StyleSheet" href="./../../css/default.css" type="text/css">
<script src="./../../scripts/ContentPageResource.js" type="text/javascript" language="JavaScript"></script><script src="./../../scripts/ContentPageSection.js" type="text/javascript" language="JavaScript"></script><script src="./../../scripts/ContentPageSubSection.js" type="text/javascript" language="JavaScript"></script><script src="./../../scripts/ContentPageToolbar.js" type="text/javascript" language="JavaScript"></script><script src="./../../scripts/contentPage.js" type="text/javascript" language="JavaScript"></script><script type="text/javascript" language="JavaScript">
					var backPath = './../../';
					var imgPath = './../../images/';
					var nodeInfo=null;
					contentPage.preload(imgPath, backPath, nodeInfo, '', true, false, false);
				</script>
</head>
<body>
<div id="breadcrumbs"></div>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr>
<td valign="top">
<div id="page-guid" value="_kkZBgJOKEdyaRbFYa4AN4A"></div>
<table border="0" cellspacing="0" cellpadding="0" width="100%">
<tr>
<td class="pageTitle" nowrap="true">Task: Integrate and Create Build</td><td width="100%">
<div align="right" id="contentPageToolbar"></div>
</td><td width="100%" class="expandCollapseLink" align="right"><a name="mainIndex" href="./../../index.htm"></a><script language="JavaScript" type="text/javascript" src="./../../scripts/treebrowser.js"></script></td>
</tr>
</table>
<table width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
<td class="pageTitleSeparator"><img src="./../../images/shim.gif" alt="" title="" height="1"></td>
</tr>
</table>
<div class="overview">
<table width="97%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="50"><img src="./../../images/task.gif" alt="" title=""></td><td>
<table class="overviewTable" border="0" cellspacing="0" cellpadding="0">
<tr>
<td valign="top">This task describes how to integrate all changes made by developers into the code base and perform the minimal testing to validate the build.</td>
</tr>
<tr>
<td>Disciplines: <a href="./../../core.default.cat_def.base/disciplines/development_discipline_44C02445.html" guid="_iGSHsVZ-EdyIUdvDLLUdeg">Development</a></td>
</tr>
</table>
</td>
</tr>
</table>
</div>
<div class="sectionHeading">Purpose</div>
<div class="sectionContent">
<table class="sectionTable" border="0" cellspacing="0" cellpadding="0">
<tr valign="top">
<td class="sectionTableSingleCell">The purpose of this task is to integrate all changes made by all developers into the code base and perform the minimal
testing on the system increment in order to validate the build.&nbsp; The goal is to identify integration issues as soon as
possible, so they can be corrected easily by the right person, at the right time.</td>
</tr>
</table>
</div>
<div class="sectionHeading">Relationships</div>
<div class="sectionContent">
<table class="sectionTable" border="0" cellspacing="0" cellpadding="0">
<tr valign="top">
<th class="sectionTableHeading" scope="row">Roles</th><td class="sectionTableCell" width="42%"><span class="sectionTableCellHeading">Primary Performer:
								</span>
<ul>
<li>
<a href="./../../core.default.role_def.base/roles/developer_C633AB7.html" guid="_0YDosMlgEdmt3adZL5Dmdw">Developer</a>
</li>
</ul>
</td><td class="sectionTableCell"><span class="sectionTableCellHeading">Additional Performers:
								</span></td>
</tr>
<tr valign="top">
<th class="sectionTableHeading" scope="row">Inputs</th><td class="sectionTableCell" width="42%"><span class="sectionTableCellHeading">Mandatory:
								</span>
<ul>
<li>
<a href="./../../core.tech.common.extend_supp/workproducts/test_script_39A30BA2.html" guid="_0ZfMEMlgEdmt3adZL5Dmdw">Test Script</a>
</li>
</ul>
<ul>
<li>
<a href="./../../core.tech.slot.base/workproducts/software_implementation_slot_E92F6A39.html" guid="_Vux8UEfUEdyiPI8btkmvmw">[Software Implementation]</a>
<ul>
<li>
<a href="./../../practice.tech.continuous_integration.base/workproducts/build_95D7D8FD.html" guid="_0YuXEMlgEdmt3adZL5Dmdw">Build</a>
</li>
<li>
<a href="./../../core.tech.common.extend_supp/workproducts/implementation_AFFEFC46.html" guid="_JqYbgJ01EdyQ3oTO93enUw">Implementation</a>
</li>
</ul>
</li>
</ul>
</td><td class="sectionTableCell"><span class="sectionTableCellHeading">Optional:
								</span>
<ul>
<li>None</li>
</ul>
</td>
</tr>
<tr valign="top">
<th class="sectionTableHeading" scope="row">Outputs</th><td class="sectionTableCell" colspan="2">
<ul>
<li>
<a href="./../../practice.tech.continuous_integration.base/workproducts/build_95D7D8FD.html" guid="_0YuXEMlgEdmt3adZL5Dmdw">Build</a>
</li>
</ul>
<ul></ul>
</td>
</tr>
</table>
</div>
<div class="sectionHeading">Steps</div>
<div class="sectionContent">
<table class="sectionTable" border="0" cellspacing="0" cellpadding="0">
<tr>
<td class="sectionTableSingleCell">
<div class="stepHeading">Integrate implemented elements</div>
<div class="stepContent">
<table class="stepTable" border="0" cellspacing="0" cellpadding="0">
<tr valign="top">
<td><p>
    In&nbsp;the relevant&nbsp;<a class="elementLink" href="./../../practice.tech.continuous_integration.base/guidances/concepts/workspace_722BBA90.html" guid="_0cEmAMlgEdmt3adZL5Dmdw">Workspace</a>, combine all completed&nbsp;<a class="elementLink" href="./../../core.mgmt.common.extend_supp/guidances/concepts/change_set_430BF233.html" guid="_1QU9MAIoEdyLh7vsrHZ4YA">Change Set</a>s that are not in the latest baseline. Resolve any conflicting versions of
    the artifacts by either removing one of the change sets that created the conflict&nbsp;or by creating a new change set
    that includes merged versions of the conflicting artifacts.
</p></td>
</tr>
</table>
</div>
<div class="stepHeading">Create build</div>
<div class="stepContent">
<table class="stepTable" border="0" cellspacing="0" cellpadding="0">
<tr valign="top">
<td><p>
    Create the build.&nbsp;The details of this step depend upon the implementation language and development environment and
    may involve compiling and linking (in the case of compiled languages) and/or other processes that result in an
    executable increment of the system.
</p>
<p>
    Examples of these steps&nbsp;include:
</p>
<ol>
    <li>
        Compiling and linking the source artifacts to create an executable
    </li>
    <li>
        Loading binary objects on a test bench or simulator
    </li>
    <li>
        Running a script to load/update database schemas
    </li>
    <li>
        Packaging and deploying web applications<br />
    </li>
</ol></td>
</tr>
</table>
</div>
<div class="stepHeading">Test integrated elements</div>
<div class="stepContent">
<table class="stepTable" border="0" cellspacing="0" cellpadding="0">
<tr valign="top">
<td><p>
    Re-run the developer tests against the integrated elements to verify that they behave the same as they did in
    isolation. Ensure that the scope of these&nbsp;tests is as broad as possible, which ensures that the latest change sets
    did not cause failing developer tests in other areas of the system.
</p></td>
</tr>
</table>
</div>
<div class="stepHeading">Run "Smoke Tests"</div>
<div class="stepContent">
<table class="stepTable" border="0" cellspacing="0" cellpadding="0">
<tr valign="top">
<td><p>
    Several builds will be created in each iteration. For each build, this step is performed only when change sets have
    been delivered to satisfy the requirements of that build.
</p>
<p>
    Execute a sub-set of the system tests to ensure that the build is suitable prior to committing resources to the full
    scope of system testing.&nbsp;While the level of testing will vary, focus on gaining confidence that the increment is
    of sufficient quality to establish a baseline for system testing.
</p></td>
</tr>
</table>
</div>
<div class="stepHeading">Make changes available</div>
<div class="stepContent">
<table class="stepTable" border="0" cellspacing="0" cellpadding="0">
<tr valign="top">
<td><p>
    When tests are successfully completed and the build is considered "good," the results&nbsp;are made available to the
    rest of the team by <a class="elementLink" href="./../../practice.tech.continuous_integration.base/guidances/guidelines/promoting_changes_9087B764.html" guid="_SM4YIL6dEdqti4GwqTkbsQ">Promoting Changes</a>.&nbsp;The details of this step depend on the configuration
    management tools in use, but in general this involves committing&nbsp;a tested change set to the CM repository so that
    it&nbsp;serves as the basis of development for the next increment of the system.&nbsp; This is the essence of <a class="elementLink" href="./../../practice.tech.continuous_integration.base/guidances/guidelines/continuous_integration_13C1A8CA.html" guid="_i8bUEL6cEdqti4GwqTkbsQ">Continuous Integration</a>.
</p></td>
</tr>
</table>
</div>
</td>
</tr>
</table>
</div>
<div class="sectionHeading">Key Considerations</div>
<div class="sectionContent">
<table class="sectionTable" border="0" cellspacing="0" cellpadding="0">
<tr valign="top">
<td class="sectionTableSingleCell"><p>
    In order to be effective at applying the practice of <a class="elementLink" href="./../../practice.tech.continuous_integration.base/guidances/guidelines/continuous_integration_13C1A8CA.html" guid="_i8bUEL6cEdqti4GwqTkbsQ">Continuous Integration</a>,&nbsp;the time to integrate, build, and test the increment
    must be short enough that it can be performed several times per day.&nbsp; Changes should be broken down into
    relatively small <a class="elementLink" href="./../../core.mgmt.common.extend_supp/guidances/concepts/change_set_430BF233.html" guid="_1QU9MAIoEdyLh7vsrHZ4YA">Change Set</a>s that can be implemented, integrated and tested quickly.
</p></td>
</tr>
</table>
</div>
<div class="sectionHeading">More Information</div>
<div class="sectionContent">
<table class="sectionTable" border="0" cellspacing="0" cellpadding="0">
<tr valign="top">
<th class="sectionTableHeading" scope="row">Concepts</th><td class="sectionTableCell">
<ul>
<li>
<a href="./../../core.mgmt.common.extend_supp/guidances/concepts/change_set_430BF233.html" guid="_1QU9MAIoEdyLh7vsrHZ4YA">Change Set</a>
</li>
<li>
<a href="./../../practice.tech.continuous_integration.base/guidances/concepts/workspace_722BBA90.html" guid="_0cEmAMlgEdmt3adZL5Dmdw">Workspace</a>
</li>
</ul>
</td>
</tr>
<tr valign="top">
<th class="sectionTableHeading" scope="row">Guidelines</th><td class="sectionTableCell">
<ul>
<li>
<a href="./../../practice.tech.continuous_integration.base/guidances/guidelines/continuous_integration_13C1A8CA.html" guid="_i8bUEL6cEdqti4GwqTkbsQ">Continuous Integration</a>
</li>
<li>
<a href="./../../practice.tech.continuous_integration.base/guidances/guidelines/promoting_changes_9087B764.html" guid="_SM4YIL6dEdqti4GwqTkbsQ">Promoting Changes</a>
</li>
</ul>
</td>
</tr>
</table>
</div>
<table class="copyright" border="0" cellspacing="0" cellpadding="0">
<tr>
<td class="copyright"><p> This program and the accompanying materials are made available under the<br />
  <a href="http://www.eclipse.org/org/documents/epl-v10.php" target="_blank">Eclipse 
  Public License V1.0</a>, which accompanies this distribution. </p><p/><p> <a class="elementLink" href="./../../core.default.release_copyright.base/guidances/supportingmaterials/openup_copyright_C3031062.html" guid="_UaGfECcTEduSX6N2jUafGA">OpenUP Copyright</a></p></td>
</tr>
</table>
</td>
</tr>
</table>
</body>
<script type="text/javascript" language="JavaScript">
				contentPage.onload();
			</script>
</html>
